###############################################################################
# @configure_input@
# Makefile for the DMalloc library.
###############################################################################

# default root installation directory
prefix = @prefix@
exec_prefix = @exec_prefix@

srcdir = @srcdir@
VPATH = @srcdir@

bindir = @bindir@
libdir = @libdir@
shlibdir = @shlibdir@
includedir = @includedir@
docdir = $(prefix)/share/doc/$(MODULE)

# default c-compiler
CC = @CC@
CXX = @CXX@

DEFS = -DHAVE_STDARG_H=@HAVE_STDARG_H@ \
	-DHAVE_STDIO_H=@HAVE_STDIO_H@ \
	-DHAVE_STDLIB_H=@HAVE_STDLIB_H@ \
	-DHAVE_STRING_H=@HAVE_STRING_H@ \
	-DHAVE_STRINGS_H=@HAVE_STRINGS_H@ \
	-DHAVE_UNISTD_H=@HAVE_UNISTD_H@ \
	-DHAVE_SYS_MMAN_H=@HAVE_SYS_MMAN_H@ \
	-DHAVE_SYS_TYPES_H=@HAVE_SYS_TYPES_H@ \
	-DHAVE_W32API_WINBASE_H=@HAVE_W32API_WINBASE_H@ \
	-DHAVE_W32API_WINDEF_H=@HAVE_W32API_WINDEF_H@ \
	-DHAVE_SYS_CYGWIN_H=@HAVE_SYS_CYGWIN_H@ \
	-DHAVE_SIGNAL_H=@HAVE_SIGNAL_H@ \
	$(DEFINES)
INCS = -I. -I$(srcdir) $(INCLUDES)
LIBS = -L. @LIBS@
A_OUT = aout@EXEEXT@

MODULE	= dmalloc
LIBRARY	= lib$(MODULE).a

# thread version of the library
LIB_TH	= lib$(MODULE)th.a
LIB_TH_SL = lib$(MODULE)th.@shlibext@
@TH_ON@BUILD_ALL_1 = threads
@TH_ON@INSTALL_LIB_1 = installth
@SL_ON@BUILD_THREADS_1 = $(LIB_TH_SL)
@SL_ON@INSTALL_THREADS_1 = installthsl
@TH_ON@@SL_ON@BUILD_ALL_2 = $(LIB_TH_SL)
@TH_ON@@SL_ON@INSTALL_LIB_2 = installthsl

# C++ version of the library
LIB_CXX	= lib$(MODULE)xx.a
LIB_CXX_SL = lib$(MODULE)xx.@shlibext@
@CXX_ON@BUILD_ALL_3 = $(LIB_CXX)
@CXX_ON@INSTALL_LIB_3 = installcxx
@SL_ON@BUILD_CXX_3 = $(LIB_CXX_SL)
@SL_ON@INSTALL_CXX_3 = installcxxsl
@CXX_ON@@SL_ON@BUILD_ALL_4 = $(LIB_CXX_SL)
@CXX_ON@@SL_ON@INSTALL_LIB_4 = installcxxsl

# threads + C++
LIB_TH_CXX = lib$(MODULE)thcxx.a
LIB_TH_CXX_SL = lib$(MODULE)thcxx.@shlibext@
@TH_ON@@CXX_ON@BUILD_ALL_5 = $(LIB_TH_CXX)
@TH_ON@@CXX_ON@INSTALL_LIB_5 = installthcxx
@TH_ON@BUILD_CXX_5 = $(LIB_TH_CXX)
@TH_ON@INSTALL_CXX_5 = installthcxx
@CXX_ON@BUILD_THREADS_5 = $(LIB_TH_CXX)
@CXX_ON@INSTALL_THREADS_5 = installthcxx
@TH_ON@@CXX_ON@@SL_ON@BUILD_ALL_6 = $(LIB_TH_CXX_SL)
@TH_ON@@CXX_ON@@SL_ON@INSTALL_LIB_6 = installthcxxsl
@TH_ON@@SL_ON@BUILD_CXX_6 = $(LIB_TH_CXX_SL)
@TH_ON@@SL_ON@INSTALL_CXX_6 = installthcxxsl
@CXX_ON@@SL_ON@BUILD_THREADS_6 = $(LIB_TH_CXX_SL)
@CXX_ON@@SL_ON@INSTALL_THREADS_6 = installthcxxsl

# shared versions of the libraries
LIB_SL = lib$(MODULE).@shlibext@
@SL_ON@BUILD_ALL_7 = $(LIB_SL)
@SL_ON@INSTALL_LIB_7 = installsl
@SL_ON@BUILD_TH_CXX_7 = $(LIB_TH_CXX_SL)
@SL_ON@INSTALL_TH_CXX_7 = installthcxxsl
@TH_ON@BUILD_SL_7 = $(LIB_TH_SL)
@TH_ON@INSTALL_SL_7 = installthsl
@CXX_ON@BUILD_SL_8 = $(LIB_CXX_SL)
@CXX_ON@INSTALL_SL_8 = installcxxsl
@TH_ON@@CXX_ON@BUILD_SL_9 = $(LIB_TH_CXX_SL)
@TH_ON@@CXX_ON@INSTALL_SL_9 = installthcxxsl

# now construct our build and install targets
BUILD_ALL = dmalloc.h $(LIBRARY) $(UTIL) \
	$(BUILD_ALL_1) $(BUILD_ALL_2) $(BUILD_ALL_3) $(BUILD_ALL_4) \
	$(BUILD_ALL_5) $(BUILD_ALL_6) $(BUILD_ALL_7) $(BUILD_ALL_8)
INSTALL_LIB = $(LIBRARY) \
	$(INSTALL_LIB_1) $(INSTALL_LIB_2) $(INSTALL_LIB_3) $(INSTALL_LIB_4) \
	$(INSTALL_LIB_5) $(INSTALL_LIB_6) $(INSTALL_LIB_7) $(INSTALL_LIB_8)
BUILD_THREADS = $(LIB_TH) \
	$(BUILD_THREADS_1) $(BUILD_THREADS_2) $(BUILD_THREADS_3) \
	$(BUILD_THREADS_4) $(BUILD_THREADS_5) $(BUILD_THREADS_6)
INSTALL_THREADS = $(LIB_TH) \
	$(INSTALL_THREADS_1) $(INSTALL_THREADS_2) $(INSTALL_THREADS_3) \
	$(INSTALL_THREADS_4) $(INSTALL_THREADS_5) $(INSTALL_THREADS_6)
BUILD_CXX = $(LIB_CXX) \
	$(BUILD_CXX_1) $(BUILD_CXX_2) $(BUILD_CXX_3) $(BUILD_CXX_4) \
	$(BUILD_CXX_5) $(BUILD_CXX_6) $(BUILD_CXX_7) $(BUILD_CXX_8)
INSTALL_CXX = $(LIB_CXX) \
	$(INSTALL_CXX_1) $(INSTALL_CXX_2) $(INSTALL_CXX_3) $(INSTALL_CXX_4) \
	$(INSTALL_CXX_5) $(INSTALL_CXX_6) $(INSTALL_CXX_7) $(INSTALL_CXX_8)
BUILD_TH_CXX = $(LIB_TH_CXX) \
	$(BUILD_TH_CXX_1) $(BUILD_TH_CXX_2) $(BUILD_TH_CXX_3) \
	$(BUILD_TH_CXX_4) $(BUILD_TH_CXX_5) $(BUILD_TH_CXX_6) \
	$(BUILD_TH_CXX_7) $(BUILD_TH_CXX_8) $(BUILD_TH_CXX_9)
INSTALL_TH_CXX = $(LIB_TH_CXX) \
	$(INSTALL_TH_CXX_1) $(INSTALL_TH_CXX_2) $(INSTALL_TH_CXX_3) \
	$(INSTALL_TH_CXX_4) $(INSTALL_TH_CXX_5) $(INSTALL_TH_CXX_6) \
	$(INSTALL_TH_CXX_7) $(INSTALL_TH_CXX_8) $(INSTALL_TH_CXX_9)
BUILD_SL = $(LIB_SL) \
	$(BUILD_SL_1) $(BUILD_SL_2) $(BUILD_SL_3) $(BUILD_SL_4) \
	$(BUILD_SL_5) $(BUILD_SL_6) $(BUILD_SL_7) $(BUILD_SL_8) \
	$(BUILD_SL_9)
INSTALL_SL = $(LIB_SL) \
	$(INSTALL_SL_1) $(INSTALL_SL_2) $(INSTALL_SL_3) $(INSTALL_SL_4) \
	$(INSTALL_SL_5) $(INSTALL_SL_6) $(INSTALL_SL_7) $(INSTALL_SL_8) \
	$(INSTALL_SL_9)

UTIL = $(MODULE)
TEXI_FILE = $(MODULE).texi
INFO_FILE = $(MODULE).info
HTML_FILE = $(MODULE).html
HTML_FILE2 = $(MODULE).html2
INSTALL_FILE = INSTALL.txt
INSTALL_FILE2 = INSTALL.txt2
LICENSE_FILE = LICENSE.txt
DOCS = $(INSTALL_FILE) $(HTML_FILE) $(INFO_FILE)

CCFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@

INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@

###############################################################################
# End of system configuration section.
###############################################################################

SHELL = /bin/sh

HFLS = dmalloc.h
OBJS = append.o arg_check.o compat.o dmalloc_rand.o dmalloc_tab.o env.o heap.o
NORMAL_OBJS = chunk.o error.o user_malloc.o
THREAD_OBJS = chunk_th.o error_th.o user_malloc_th.o
CXX_OBJS = dmallocc.o

CFLAGS = $(CCFLAGS)
TEST = $(MODULE)_t
TEST_FC = $(MODULE)_fc_t

all : $(BUILD_ALL)
@TH_OFF@	@echo "To make the thread version of the library type 'make threads'"
@CXX_OFF@	@echo "To make the C++ version of the library type 'make cxx'"
@SL_OFF@	@echo "To make the shared version of the library type 'make shlib'"

clean :
	rm -f $(A_OUT) core *.o *.t
	rm -f $(LIBRARY) $(LIB_TH) $(LIB_CXX) $(LIB_TH_CXX) $(TEST) $(TEST_FC)
	rm -f $(LIB_TH_SL) $(LIB_CXX_SL) $(LIB_TH_CXX_SL) $(LIB_SL)
	rm -f $(UTIL) dmalloc.h

realclean : clean

distclean : clean
	rm -f confdefs.h config.status config.log config.cache conf.h
	rm -f configure.lineno
	rm -rf autom4te.cache
	rm -f Makefile settings.h dmalloc.h dmalloc.h.2 version.h
	rm -f $(INFO_FILE) $(HTML_FILE2) $(INSTALL_FILE2)
#	rm -f configure

docs : $(DOCS) LICENSE.txt

installdirs :
	$(srcdir)/mkinstalldirs $(includedir) $(libdir) $(bindir)

installincs : $(HFLS)
	$(srcdir)/mkinstalldirs $(includedir)
	$(INSTALL_DATA) $(HFLS) $(includedir)

installthsl : $(LIB_TH_SL)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIB_TH_SL) $(libdir)

installth : $(INSTALL_THREADS)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIB_TH) $(libdir)
@CXX_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
@SL_OFF@	@echo "Enter 'make installthsl' to install the threaded shared-library"

installthcxxsl : $(LIB_TH_CXX_SL)
	$(srcdir)/mkinstalldirs $(shlibdir)
	$(INSTALL_PROGRAM) $(LIB_TH_CXX_SL) $(shlibdir)

installthcxx : $(INSTALL_TH_CXX)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIB_TH_CXX) $(libdir)
@SL_OFF@	@echo "Enter 'make installthcxxsl' to install the threaded C++ shared-library"

installcxxsl : $(LIB_CXX_SL)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIB_CXX_SL) $(libdir)

installcxx : $(INSTALL_CXX)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIB_CXX) $(libdir)
@TH_OFF@	@echo "Enter 'make installthcxx' to install the threaded C++ library"
@SL_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"

installsl : $(LIB_SL)
	$(srcdir)/mkinstalldirs $(shlibdir)
	$(INSTALL_PROGRAM) $(LIB_SL) $(shlibdir)
@CXX_OFF@	@echo "Enter 'make installcxxsl' to install the C++ shared-library"
@TH_OFF@	@echo "Enter 'make installthsl' to install thread shared-library"

installlib : $(INSTALL_LIB)
	$(srcdir)/mkinstalldirs $(libdir)
	$(INSTALL_PROGRAM) $(LIBRARY) $(libdir)
	@RANLIB@ $(libdir)/$(LIBRARY)
@SL_OFF@	@echo "Enter 'make installsl' to install $(LIB_SL) in $(shlibdir)"
@CXX_OFF@	@echo "Enter 'make installcxx' to install the C++ library"
@TH_OFF@	@echo "Enter 'make installth' to install thread library"

# see notes about why we need the FILE2 entries below
installdocs : $(INSTALL_FILE2) $(HTML_FILE2) $(INFO_FILE)
	$(srcdir)/mkinstalldirs $(docdir)
	$(INSTALL_DATA) $(INSTALL_FILE2) $(docdir)/$(INSTALL_FILE)
	$(INSTALL_DATA) $(HTML_FILE2) $(docdir)/$(HTML_FILE)
	$(INSTALL_DATA) $(INFO_FILE) $(docdir)

install : installincs installlib $(UTIL)
	$(srcdir)/mkinstalldirs $(bindir)
	$(INSTALL_PROGRAM) $(UTIL) $(bindir)
	@echo "Enter 'make installdocs' to install $(DOCS) in $(docdir)"

dmalloc.h.2 conf.h settings.h version.h : $(srcdir)/configure $(srcdir)/settings.dist $(srcdir)/conf.h.in
	$(SHELL) $(srcdir)/configure
	-touch dmalloc.h.2 conf.h settings.h version.h

dmalloc.h : $(srcdir)/dmalloc.h.1 dmalloc.h.2 $(srcdir)/dmalloc.h.3 $(srcdir)/user_malloc.h \
		$(srcdir)/dmalloc.h.4 $(srcdir)/arg_check.h $(srcdir)/dmalloc.h.5
	rm -f $@ $@.t
	cat $(srcdir)/dmalloc.h.1 dmalloc.h.2 $(srcdir)/dmalloc.h.3 > $@.t
	sed -e '1,/<<<<<<<</d' -e '/<<<<<<<</,$$d' $(srcdir)/user_malloc.h >> $@.t
	cat $(srcdir)/dmalloc.h.4 >> $@.t
	sed -e '1,/<<<<<<<</d' -e '/<<<<<<<</,$$d' -e '/^#if/d' -e '/^#endif/d' $(srcdir)/arg_check.h >> $@.t
	cat $(srcdir)/dmalloc.h.5 >> $@.t
	mv $@.t $@

$(INFO_FILE) : $(srcdir)/$(TEXI_FILE)
	rm -f $@ $@.t
	makeinfo -o $@.t --fill-column=100 --no-split $<
	mv $@.t $@

# we need the FILE2 this because make gets confused by ../dmalloc.html
$(HTML_FILE) $(HTML_FILE2) : $(srcdir)/$(TEXI_FILE)
	rm -f $@ $@.t
	texi2html --output=$@.t -number -monolithic $<
	mv $@.t $@

# we need the FILE2 this because make gets confused by ../INSTALL.txt
$(INSTALL_FILE) $(INSTALL_FILE2) : $(INFO_FILE)
	rm -f $@ $@.t
	echo ------------------------------------------------------------------------------- > $@.t
	sed -e '1,/,  Node: Installation/d' -e '/,  Node: Getting Started/,$$d' \
		< $(INFO_FILE) | tr -d '\037'  >> $@.t
	echo ------------------------------------------------------------------------------- >> $@.t
	sed -e '1,/,  Node: Getting Started/d' -e '/,  Node: Allocation Basics/,$$d' \
		< $(INFO_FILE) | tr -d '\037'  >> $@.t
	echo ------------------------------------------------------------------------------- >> $@.t
	sed -e '1,/,  Node: Troubleshooting/d' -e '/,  Node: Index of Concepts/,$$d' \
		< $(INFO_FILE) | tr -d '\037'  >> $@.t
	echo ------------------------------------------------------------------------------- >> $@.t
	mv $@.t $@

# we need the FILE2 this because make gets confused by ../INSTALL.txt
$(LICENSE_FILE) : $(INFO_FILE)
	rm -f $@ $@.t
	sed -e '1,/,  Node: License/d' -e '/,  Node: Overview/,$$d' < $(INFO_FILE) \
		| sed -e '1,4d' \
		| tr -d '\037'  >> $@.t
	mv $@.t $@

shlib : $(BUILD_SL)
@TH_OFF@	@echo "To make the thread version of the library type 'make threads'"
@CXX_OFF@	@echo "To make the C++ version of the library type 'make cxx'"

# NOTE: you may have to edit the configure.ac script to get this to
# work on your operating system.  Please send feedback to the author
$(LIB_SL) : $(LIBRARY)
	rm -f $@ $@.t
	@shlinkargs@ $(LIBRARY)
	mv $@.t $@

$(LIBRARY) : $(OBJS) $(NORMAL_OBJS)
	ar cr $@ $?
	@RANLIB@ $@

$(LIB_TH) : $(OBJS) $(THREAD_OBJS)
	ar cr $@ $?
	@RANLIB@ $@

$(LIB_TH_SL) : $(LIB_TH)
	rm -f $@ $@.t
	@shlinkargs@ $(LIB_TH)
	mv $@.t $@

$(LIB_CXX) : $(OBJS) $(NORMAL_OBJS) $(CXX_OBJS)
	ar cr $@ $?
	@RANLIB@ $@

$(LIB_CXX_SL) : $(LIB_CXX)
	rm -f $@ $@.t
	@shlinkargs@ $(LIB_CXX)
	mv $@.t $@

$(LIB_TH_CXX) : $(OBJS) $(THREAD_OBJS) $(CXX_OBJS)
	ar cr $@ $?
	@RANLIB@ $@

$(LIB_TH_CXX_SL) : $(LIB_TH_CXX)
	rm -f $@ $@.t
	@shlinkargs@ $(LIB_TH_CXX)
	mv $@.t $@

threadssl : $(LIB_TH_SL)

threadscxxsl : $(LIB_TH_CXX_SL)

threadscxx : $(BUILD_TH_CXX)
@SL_OFF@	@echo "Enter 'make threadscxxsl' to build the threaded C++ shared-library"

threads : $(BUILD_THREADS)
@CXX_OFF@	@echo "Enter 'make threadscxx' to build the threaded C++ library"
@SL_OFF@	@echo "Enter 'make threadssl' to build the threaded shared library"

cxxsl :  $(LIB_CXX_SL)

cxx : $(BUILD_CXX)
@SL_OFF@	@echo "Enter 'make cxxsl' to build the cxx shared library"

utils : $(UTIL)

$(UTIL) : $(UTIL).o dmalloc_argv.o compat.o env.o append.o
	rm -f $@
	$(CC) $(LDFLAGS) -o $(A_OUT) $(UTIL).o dmalloc_argv.o compat.o env.o append.o $(LIBS)
	mv $(A_OUT) $@

# special _th versions of objects with the LOCK_THREADS variable defined to 1
chunk_th.o : $(srcdir)/chunk.c
	rm -f $@
	$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 -c $(srcdir)/chunk.c -o ./$@

error_th.o : $(srcdir)/error.c
	rm -f $@
	$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 -c $(srcdir)/error.c -o ./$@

user_malloc_th.o : $(srcdir)/user_malloc.c
	rm -f $@
	$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -DLOCK_THREADS=1 -c $(srcdir)/user_malloc.c -o ./$@

test tests : check light heavy

$(TEST) : $(TEST).o dmalloc_argv.o $(LIBRARY)
	rm -f $@
	$(CC) $(LDFLAGS) -o $(A_OUT) $(TEST).o dmalloc_argv.o $(LIBRARY)
	mv $(A_OUT) $@

$(TEST_FC) : $(TEST_FC).o dmalloc_argv.o $(LIBRARY)
	rm -f $@
	$(CC) $(LDFLAGS) -o $(A_OUT) $(TEST_FC).o dmalloc_argv.o $(LIBRARY)
	mv $(A_OUT) $@

check : $(TEST) $(TEST_FC)
	./$(TEST_FC) -s
	./$(TEST) -s -t 0
	@echo checks have passed

light : $(TEST) $(TEST_FC) check
	./$(TEST) -s -t 100000
	./$(TEST) -s -t 100000
	./$(TEST) -s -t 100000
	./$(TEST) -s -t 100000
	./$(TEST) -s -t 100000
	@echo light tests have passed

heavy : $(TEST) light
	./$(TEST) -s -t 1000000
	./$(TEST) -s -t 1000000
	./$(TEST) -s -t 1000000
	@echo heavy tests have passed

.c.o :
	rm -f $@
	$(CC) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $< -o ./$@

#
# .cc.o auto-target doesn't work on some systems.
# also, $? did not work on OSF for the -c, grrr
#
dmallocc.o : $(srcdir)/dmallocc.cc
	rm -f $@
	$(CXX) $(CFLAGS) $(CPPFLAGS) $(DEFS) $(INCS) -c $(srcdir)/dmallocc.cc -o ./$@

depend :
	rm -f Makefile.t
	sed -e '/dependencies ''are ''automatically/,$$d' Makefile > Makefile.t
	@ echo '# These dependencies ''are ''automatically ''generated.  Do not edit by hand.' >> Makefile.t
	@ echo '' >> Makefile.t
	- $(CC) $(INCS) -MM *.c *.cc >> Makefile.t
	- $(CC) $(INCS) -MM chunk.c | sed -e 's/^chunk.o/chunk_th.o/' >> Makefile.t
	- $(CC) $(INCS) -MM error.c | sed -e 's/^error.o/error_th.o/' >> Makefile.t
	- $(CC) $(INCS) -MM user_malloc.c | sed -e 's/^user_malloc.o/user_malloc_th.o/' >> Makefile.t
	@ echo 'Dependencies in Makefile.t'
	diff Makefile Makefile.t
	# this won't be done unless they are the same
	rm -f Makefile.t

###############################################################################
#
# These dependencies are automatically generated.  Do not edit by hand.

append.o: append.c conf.h settings.h dmalloc.h append.h compat.h \
  dmalloc_loc.h
arg_check.o: arg_check.c conf.h settings.h dmalloc.h chunk.h debug_tok.h \
  dmalloc_loc.h error.h arg_check.h
chunk.o: chunk.c conf.h settings.h dmalloc.h append.h chunk.h chunk_loc.h \
  dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h \
  error.h error_val.h heap.h
compat.o: compat.c conf.h settings.h dmalloc.h compat.h dmalloc_loc.h
dmalloc.o: dmalloc.c conf.h settings.h dmalloc_argv.h dmalloc.h append.h \
  compat.h debug_tok.h dmalloc_loc.h env.h error_val.h version.h
dmalloc_argv.o: dmalloc_argv.c conf.h settings.h append.h dmalloc_argv.h \
  dmalloc_argv_loc.h compat.h
dmalloc_fc_t.o: dmalloc_fc_t.c conf.h settings.h dmalloc.h dmalloc_argv.h \
  dmalloc_rand.h debug_tok.h dmalloc_loc.h error_val.h
dmalloc_rand.o: dmalloc_rand.c dmalloc_rand.h
dmalloc_t.o: dmalloc_t.c conf.h settings.h append.h compat.h dmalloc.h \
  dmalloc_argv.h dmalloc_rand.h arg_check.h debug_tok.h dmalloc_loc.h \
  error_val.h heap.h
dmalloc_tab.o: dmalloc_tab.c conf.h settings.h append.h chunk.h compat.h \
  dmalloc.h dmalloc_loc.h dmalloc_tab.h dmalloc_tab_loc.h
env.o: env.c conf.h settings.h dmalloc.h append.h compat.h dmalloc_loc.h \
  debug_tok.h env.h error.h
error.o: error.c conf.h settings.h dmalloc.h append.h chunk.h compat.h \
  debug_tok.h dmalloc_loc.h env.h error.h error_val.h version.h
heap.o: heap.c conf.h settings.h dmalloc.h append.h chunk.h compat.h \
  debug_tok.h dmalloc_loc.h error.h error_val.h heap.h
protect.o: protect.c conf.h settings.h dmalloc.h dmalloc_loc.h error.h \
  heap.h protect.h
user_malloc.o: user_malloc.c conf.h settings.h dmalloc.h append.h chunk.h \
  compat.h debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
  user_malloc.h return.h
dmallocc.o: dmallocc.cc dmalloc.h return.h conf.h settings.h
chunk_th.o: chunk.c conf.h settings.h dmalloc.h append.h chunk.h chunk_loc.h \
  dmalloc_loc.h compat.h debug_tok.h dmalloc_rand.h dmalloc_tab.h \
  error.h error_val.h heap.h
error_th.o: error.c conf.h settings.h dmalloc.h append.h chunk.h compat.h \
  debug_tok.h dmalloc_loc.h env.h error.h error_val.h version.h
user_malloc_th.o: user_malloc.c conf.h settings.h dmalloc.h append.h chunk.h \
  compat.h debug_tok.h dmalloc_loc.h env.h error.h error_val.h heap.h \
  user_malloc.h return.h
